package info.wangyuan.agent.entity.dto;

import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.Size;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * RAG流式问答请求DTO
 *
 * @author Albert
 * @since 2025-09-07 02:07:15
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class RagStreamChatRequestDTO {

    /**
     * 会话记忆
     */
    @NotBlank(message = "会话ID不能为空")
    private String sessionId;

    /**
     * 用户问题
     */
    @NotBlank(message = "问题不能为空")
    @Size(min = 1, max = 1000, message = "问题长度必须在1-1000字符之间")
    private String question;

    /**
     * RAG搜索相关配置
     */
    @Builder.Default
    private Integer maxResults = 15; // 默认检索15个相关文档
    @Builder.Default
    private Double minScore = 0.7; // 默认相似度阈值
    @Builder.Default
    private Boolean enableRerank = true; // 默认启用重排序
}
